package com.note.service.impl;

import com.note.domain.UserMessage;
import com.note.dto.CommentMessageDTO;
import com.note.dto.UserMessageDTO;
import com.note.mapper.UserMessageMapper;
import com.note.service.IUserMessageService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


/**
 * 【请填写功能名称】Service业务层处理
 * 
 * @author ruoyi
 * @date 2021-05-07
 */
@Service
public class UserMessageServiceImpl implements IUserMessageService
{
    @Autowired
    private UserMessageMapper userMessageMapper;

    /**
     * 查询【请填写功能名称】
     * 
     * @param id 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    @Override
    public UserMessage selectUserMessageById(Long id)
    {
        return userMessageMapper.selectUserMessageById(id);
    }

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param userMessage 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<UserMessageDTO> selectUserMessageList(UserMessage userMessage)
    {
        return userMessageMapper.selectUserMessageList(userMessage);
    }

    @Override
    public List<CommentMessageDTO> getCommentFirstList(String sourceId) {
        //获取资源首页的评论
        List<CommentMessageDTO> commentFirstList = userMessageMapper.getCommentFirstList(sourceId);
        if(CollectionUtils.isNotEmpty(commentFirstList)){
            //组装每条首页评论有多少 个回复消息
            List<CommentMessageDTO> replyCountList = userMessageMapper.getReplyCount(commentFirstList.stream().map(CommentMessageDTO::getId).collect(Collectors.toList()));
            Map<String, Integer> replyMap = replyCountList.stream().collect(Collectors.toMap(CommentMessageDTO::getRootCommentId, CommentMessageDTO::getReplyCount));
            commentFirstList.forEach(x -> {
                Integer reployCount = replyMap.get(x.getId());
                x.setReplyCount(reployCount == null ? 0 : reployCount);
            });


        }
        return commentFirstList;
    }

    @Override
    public List<CommentMessageDTO> getCommentList(String commentId) {
        return userMessageMapper.getCommentList(commentId);
    }

    /**
     * 新增【请填写功能名称】
     * 
     * @param userMessage 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertUserMessage(UserMessage userMessage)
    {
        return userMessageMapper.insertUserMessage(userMessage);
    }

    /**
     * 修改【请填写功能名称】
     * 
     * @param userMessage 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateUserMessage(UserMessage userMessage)
    {
        return userMessageMapper.updateUserMessage(userMessage);
    }

    /**
     * 批量删除【请填写功能名称】
     * 
     * @param ids 需要删除的【请填写功能名称】ID
     * @return 结果
     */
    @Override
    public int deleteUserMessageByIds(String[] ids)
    {
        return userMessageMapper.deleteUserMessageByIds(ids);
    }

    /**
     * 删除【请填写功能名称】信息
     * 
     * @param id 【请填写功能名称】ID
     * @return 结果
     */
    @Override
    public int deleteUserMessageById(Long id)
    {
        return userMessageMapper.deleteUserMessageById(id);
    }
}
